home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / a_utils / perl / prlbkxmp.lha / ch6 / tgrep < prev    next >
Text File  |  1991-01-08  |  824b  |  51 lines

  1. #!/usr/bin/perl
  2.  
  3. # Usage: tgrep [-l] pattern [files]
  4.  
  5. # Handle
  6. if ($ARGV[0] eq '-l') {
  7.     shift;
  8.     $action = <<'EOF';
  9.         print $file,"\n";
  10.         next FILE;
  11. EOF
  12. }
  13. else {
  14.     $action = <<'EOF';
  15.         print $file,":\t", $_;
  16. EOF
  17. }
  18.  
  19. # Get pattern and protect the delimiter we'll use.
  20.  
  21. $pat = shift;
  22. $pat =~ s/!/\\!/g;
  23.  
  24. # Generate the program.
  25.  
  26. $prog = <<EOF;
  27. FILE: foreach \$file (\@ARGV) {
  28.     open(FILE,\$file) || do {
  29.     print STDERR "Can't open \$file: \$!\\n";
  30.     next;
  31.     };
  32.     next if -d FILE;    # ignore directories
  33.     next if -B FILE;    # ignore binary files
  34.     while (<FILE>) {
  35.     if (m!$pat!) {
  36.         $action
  37.     }
  38.     }
  39. }
  40. EOF
  41.  
  42. # We often put in lines like this while developing scripts, so we
  43. # can see what program the program is writing.
  44.  
  45. print $prog if $debugging;
  46.  
  47. # And finally, do it.
  48.  
  49. eval $prog;
  50. die $@ if $@;
  51.